home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Palettes / TablePrinter / TablePrinter.m < prev    next >
Text File  |  1995-06-12  |  6KB  |  270 lines

  1.  
  2. // TablePrinter -- A cover class for DBTableViewPrinter.
  3. //
  4. // By Eric T. Seymour, NeXT Computer, Inc.
  5. //
  6. // This object creates and maintains an instance of DBTableViewPrinter in
  7. // an off screen window.  This was designed primarily for ease of use in IB.
  8. //
  9. // You may freely copy, distribute, and reuse the code in this example.
  10. // NeXT disclaims any warranty of any kind, expressed or  implied, as to its
  11. // fitness for any particular use.
  12. //
  13. // This file looks best when using tabstops of 3.
  14.  
  15.  
  16. #import "TablePrinter.h"
  17. #import "DBTableViewPrinter.h"
  18.  
  19. @implementation TablePrinter
  20.  
  21. // return the image for the instance icon in the IB file
  22. - (NXImage *)getIBImage
  23. {
  24.     char    path[MAXPATHLEN + 1];
  25.  
  26.     [[NXBundle bundleForClass:[self class]] getPath:path 
  27.         forResource:"TablePrinter" ofType:"tiff"];
  28.     return [[NXImage alloc] initFromFile:path];
  29. }
  30.  
  31. - init
  32. {
  33.     id            theWindow,
  34.                 theScrollView;
  35.     NXRect    frm = {100.0,100.0,200.0,200.0};
  36.     
  37.     // init things
  38.     [super init];
  39.     tableView = nil;
  40.  
  41.     // Create a hidden window
  42.     theWindow = [[Window alloc] initContent:&frm
  43.         style:NX_TITLEDSTYLE
  44.         backing:NX_BUFFERED
  45.         buttonMask:NX_CLOSEBUTTONMASK
  46.         defer:NO];
  47.  
  48.     // Create a scrollview and place inside the window
  49.     NXSetRect(&frm,0.0,0.0,190.0,190.0);
  50.     theScrollView = [[ScrollView alloc] initFrame:&frm];
  51.     [theScrollView setHorizScrollerRequired:YES];
  52.     [theScrollView setVertScrollerRequired:YES];
  53.     [theWindow setContentView:theScrollView];
  54.  
  55.     // Create a printerView and place it in the scrollView
  56.     printerView = [[DBTableViewPrinter alloc] initFrame:&frm];
  57.     [theScrollView setDocView:printerView];
  58.  
  59.     return self;
  60. }
  61.  
  62. - copyFromZone:(NXZone *)zone
  63. {
  64.     // Copy self
  65.     self = [super copyFromZone:zone];
  66.     [self awake];
  67.  
  68.     return self;
  69. }
  70.  
  71. - awake
  72. {
  73.     id            theWindow,
  74.                 theScrollView;
  75.     NXRect    frm = {100.0,100.0,200.0,200.0};
  76.         
  77.     [super awake];
  78.  
  79.     // Create a hidden window
  80.     theWindow = [[Window alloc] initContent:&frm
  81.         style:NX_TITLEDSTYLE
  82.         backing:NX_BUFFERED
  83.         buttonMask:NX_CLOSEBUTTONMASK
  84.         defer:NO];
  85.  
  86.     // Create a scrollview and place inside the window
  87.     NXSetRect(&frm,0.0,0.0,190.0,190.0);
  88.     theScrollView = [[ScrollView alloc] initFrame:&frm];
  89.     [theScrollView setHorizScrollerRequired:YES];
  90.     [theScrollView setVertScrollerRequired:YES];
  91.     [theWindow setContentView:theScrollView];
  92.  
  93.     // Place the TablePrinter inside the ScrollView
  94.     [theScrollView setDocView:printerView];
  95.     [theWindow display];
  96.  
  97.     return self;
  98. }
  99.  
  100. - free
  101. {
  102.     // free my hidden window, which in turn frees all its contents
  103.     [[printerView window] free];
  104.     return [super free];
  105. }
  106.  
  107. - setTableView:table
  108. {
  109.     tableView = table;
  110.     return self;
  111. }
  112. - tableView{return tableView;}
  113.  
  114. // return the actual DBTablePrinterView
  115. - printerView{return printerView;}
  116.  
  117. - printPSCode:sender
  118. {
  119.     // Set the table and print
  120.     [printerView setTableView:tableView];
  121.     return [printerView printPSCode:sender];
  122. }
  123.  
  124. - read:(NXTypedStream*)stream
  125. {
  126.     [super read:stream];
  127.     printerView = NXReadObject(stream);
  128.     NXReadTypes(stream,"@",&tableView);
  129.     return self;
  130. }
  131.  
  132. - write:(NXTypedStream*)stream
  133. {
  134.     [super write:stream];
  135.     NXWriteObject(stream,printerView);
  136.     NXWriteTypes(stream,"@",&tableView);
  137.     return self;
  138. }
  139.  
  140. - (const char *)getInspectorClassName
  141. {
  142.     return "TablePrinterInspector";
  143. }
  144.  
  145. // DBTableViewPrinter Cover Methods.  These are designed to respond to UI
  146. // target/action events.  For example, "forceColorToggle:" could be the
  147. // target of a toggle button.  After being messaged, "forceColorToggle" would
  148. // then query the state of that toggle button (sender) and set the value
  149. // directly in the printerView.
  150.  
  151. - headerBezelToggle:sender
  152. {
  153.     if ( sender && [sender respondsTo:@selector(state)] )
  154.         [printerView setColumnHeadersBezeled:[sender state]];
  155.     return self;
  156. }
  157.  
  158. - forceColorToggle:sender
  159. {
  160.     if ( sender && [sender respondsTo:@selector(state)] )
  161.         [printerView setForceDrawColor:[sender state]];
  162.     return self;
  163. }
  164.  
  165. - pageNumbersToggle:sender
  166. {
  167.     if ( sender && [sender respondsTo:@selector(state)] )
  168.         [printerView setPageNumbersEnabled:[sender state]];
  169.     return self;
  170. }
  171.  
  172. - rowNumbersToggle:sender
  173. {
  174.     if ( sender && [sender respondsTo:@selector(state)] )
  175.         [printerView setRowNumbersEnabled:[sender state]];
  176.     return self;
  177. }
  178.  
  179. - gridLinesToggle:sender
  180. {
  181.     if ( sender && [sender respondsTo:@selector(state)] )
  182.         [printerView setGridLinesOn:[sender state]];
  183.     return self;
  184. }
  185.  
  186. - selectedRowsToggle:sender
  187. {
  188.     if ( sender && [sender respondsTo:@selector(state)] )
  189.         [printerView setSelectedRowsOnly:[sender state]];
  190.     return self;
  191. }
  192.  
  193. - startPageNum:sender
  194. {
  195.     if ( sender && [sender respondsTo:@selector(intValue)] )
  196.         [printerView setStartingPageNumber:[sender intValue]];
  197.     return self;
  198. }
  199.  
  200. - startRowNum:sender
  201. {
  202.     if ( sender && [sender respondsTo:@selector(intValue)] )
  203.         [printerView setStartingRowNumber:[sender intValue]];
  204.     return self;
  205. }
  206.  
  207. - pageNumSeparator:sender
  208. {
  209.     if ( sender && [sender respondsTo:@selector(stringValue)] )
  210.         [printerView setPageNumberSeparator:[sender stringValue][0]];
  211.     return self;
  212. }
  213.  
  214. - rowNumHeader:sender
  215. {
  216.     if ( sender && [sender respondsTo:@selector(stringValue)] )
  217.         [printerView setRowNumbersTitle:[sender stringValue]];
  218.     return self;
  219. }
  220.  
  221. - headerTextColor:sender
  222. {
  223.     if ( sender && [sender respondsTo:@selector(color)] )
  224.         [printerView setColumnHeadersTextColor:[sender color]];
  225.     return self;
  226. }
  227.  
  228. - headerBackColor:sender
  229. {
  230.     if ( sender && [sender respondsTo:@selector(color)] )
  231.         [printerView setColumnHeadersBackColor:[sender color]];
  232.     return self;
  233. }
  234.  
  235. - rowNumTextColor:sender
  236. {
  237.     if ( sender && [sender respondsTo:@selector(color)] )
  238.         [printerView setRowNumbersTextColor:[sender color]];
  239.     return self;
  240. }
  241.  
  242. - rowNumBackColor:sender
  243. {
  244.     if ( sender && [sender respondsTo:@selector(color)] )
  245.         [printerView setRowNumbersBackColor:[sender color]];
  246.     return self;
  247. }
  248.  
  249. - gridColor:sender
  250. {
  251.     if ( sender && [sender respondsTo:@selector(color)] )
  252.         [printerView setGridLinesColor:[sender color]];
  253.     return self;
  254. }
  255.  
  256. - pageNumColor:sender
  257. {
  258.     if ( sender && [sender respondsTo:@selector(color)] )
  259.         [printerView setPageNumberColor:[sender color]];
  260.     return self;
  261. }
  262.  
  263. - backgroundColor:sender
  264. {
  265.     if ( sender && [sender respondsTo:@selector(color)] )
  266.         [printerView setBackgroundColor:[sender color]];
  267.     return self;
  268. }
  269.  
  270. @end